#pragma once

#include <iostream>

namespace MCCommon
{
class ISerializable
{
public:
    
    /**
     * Destructor.
     * 
     */
    virtual ~ISerializable() 
    {            
    }

    /**
     * Write object to a stream.
     * 
     */
    virtual void WriteObject
    (
        std::ostream& os
    ) const = 0;

    /**
     * Read object from a stream.
     * 
     */
    virtual bool ReadObject
    (
        std::istream& is
    ) = 0;
};

}// end of namespace MCCommon